package main

import (
	"fmt"
)

// 编写一个函数 rotate ,实现一次遍历就可以完成元素翻转 右移
func main() {
	arr := []int{1, 2, 3, 4, 5, 6, 7}
	// 			 5 6 7 1 2 3 4
	offset := 3
	offset = offset % len(arr)
	tmp := make([]int, len(arr))
	for i, _ := range arr {
		// 倒叙遍历
		if i < offset {
			tmp[i] = arr[len(arr)+i-offset]
		} else {
			tmp[i] = arr[i-offset]
		}
	}
	fmt.Println(tmp)
	l := len(arr)
	// 元素对调
	var temp int
	// 首位调换  位移多少 调换多少次
	for i := 0; i < offset; i++ {
		temp = arr[l-1]
		for j := l - 1; j >= 0; j-- {
			if j == 0 {
				arr[0] = temp
			} else {
				arr[j] = arr[j-1]
			}

		}
	}
	copy(tmp[0:offset], arr[len(arr)-3:])
	//copy(tmp[offset:], arr[0:len(arr)-3])
	fmt.Println()
}
